Independent Watchdog (IWDG) support(iwdg.h)
独立したウォッチドッグ(IWDG)のサポート
概要(*1)
ソフトウェア障害による誤動作を検出および解決し、カウンタが与えられたタイムアウト値に達すると、システムリセットまたは割り込み(ウィンドウ型ウォッチドッグのみ)をトリガします。
独立型ウォッチドッグ(IWDG)は、独立した RC オシレータからクロック供給されるので、メインクロックに障害があってもアクティブなままです。
独立したウォッチドッグを使用するには、まずアプリケーションの適切なプリスケーラおよびIWDGカウンタリロード値を使用してiwdg_init()を呼び出します。 その後、IWDGカウンタが0に達する前に定期的にiwdg_feed()を呼び出して、カウンタをリロード値にリセットする必要があります。 そうしないと、チップがリセットされます。
一度起動すると、独立したウォッチドッグをオフにすることはできません。
データ型
■ struct iwdg_reg_map
独立したウォッチドッグ・レジスタ・マップ
パブリックメンバー
__io uint32 KR キーレジスタ(IWDG_KR)
__io uint32 PR プリスケーラレジスタ(IWDG_PR)
__io uint32 RLR 再ロードレジスタ(IWDG_RLR)
__io uint32 SR ステータスレジスタ(IWDG_SR)
■ iwdg_prescaler 列挙型
IWDG_PRE_4 IWDG_PR_DIV_4 4分周
IWDG_PRE_8 IWDG_PR_DIV_8 8分周
IWDG_PRE_16 IWDG_PR_DIV_16 16分周
IWDG_PRE_32 IWDG_PR_DIV_32 32分周
IWDG_PRE_64 IWDG_PR_DIV_64 64分周
IWDG_PRE_128 IWDG_PR_DIV_128 128分周
IWDG_PRE_256 IWDG_PR_DIV_256 256分周
デバイス
なし
API関数
■ void iwdg_init(iwdg_prescaler prescaler, uint16 reload)
ウォッチドッグを初期化して開始します。
引数
prescaler :40 kHz IWDGクロックのプリスケーラ
reload :独立したウォッチドッグカウンタのリロード値
プリスケーラとリロードはタイムアウトを設定します。 例えば、IWDG_PRE_32のプリスケーラは、40kHzのクロックを32で分周し、リロードごとに約1msを与えます。
■ void iwdg_feed(void)
IWDGカウンタをリセットします。
この機能を呼び出すと、IWDGカウンタがリロード値にリセットされます。
レジスタマップベースポインタ
■ IWDG_BASE
独立したウォッチドッグベースポインタ
レジスタのビット定義
キーレジスタ(IWDG_KR)
KEY[15:0] 16ビット (w) 設定値
IWDG_KR_UNLOCK IWDG_PR および IWDG_RLR レジスタへの利用のロック解除
IWDG_KR_FEED IWDGカウンタリセット
IWDG_KR_START ウォッチドッグ開始
プリスケーラレジスタ(IWDG_PR)
PR [2:0] 3ビット(rw) 設定値
IWDG_PR_DIV_4 4分周
IWDG_PR_DIV_8 8分周
IWDG_PR_DIV_16 16分周
IWDG_PR_DIV_32 32分周
IWDG_PR_DIV_64 64分周
IWDG_PR_DIV_128 128分周
IWDG_PR_DIV_256 256分周
ステータスレジスタ(IWDG_SR)
IWDG_SR_RVU_BIT RVU [1] 1ビット(r) ウォッチドッグカウンタ再ロード値の更新 のビット番号
IWDG_SR_PVU_BIT PVU [1] 1ビット(r) ウォッチドッグプリスケーラ値の更新 のビット番号
IWDG_SR_RVU RVUのビット参照
IWDG_SR_PVU PVU のビット参照
脚注
(*1)は、参考文献1の「18 独立型ウォッチドッグ(IWDG)」より一部を引用しています。
参考文献
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。